package org.springblade.resource.oss;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.oss.model.BladeFile;
import org.springblade.resource.oss.type.FileType;

import java.io.File;
import java.io.InputStream;

/**
 * 携带返回文件类型的 {@link BladeFile} 对象
 */
@Getter
@ApiModel(value = "BladeFileWithType 对象", description = "携带返回文件类型的 BladeFile 对象")
public class BladeFileWithType {

	@Setter(AccessLevel.NONE)
	@ApiModelProperty(value = "oss文件信息")
	private BladeFile file;

	@ApiModelProperty(value = "oss文件类型")
	private String fileType;

	/**
	 * 设置文件
	 *
	 * @param bladeFile    上传文件返回的 {@link BladeFile} 对象
	 * @param originalFile 原始文件对象 {@link File}
	 */
	public void setFile(BladeFile bladeFile, File originalFile) {
		this.file = bladeFile;
		this.fileType = FileType.getFileType(originalFile).getType();
	}

	/**
	 * 设置文件
	 *
	 * @param bladeFile 		上传文件返回的 {@link BladeFile} 对象
	 * @param in 原始文件输入流对象 {@link InputStream}
	 */
	public void setFile(BladeFile bladeFile, InputStream in) {
		this.file = bladeFile;
		this.fileType = FileType.getFileType(in).getType();
	}


	/**
	 * 构造器
	 * @param bladeFile
	 * @param originalFile
	 */
	public BladeFileWithType(BladeFile bladeFile, File originalFile) {
		setFile(bladeFile, originalFile);
	}

	/**
     * 构造器
     * @param bladeFile
     * @param in
     */
	public BladeFileWithType(BladeFile bladeFile, InputStream in) {
		setFile(bladeFile, in);
	}

	public BladeFileWithType() {
	}
}
